package day20170417.exercise.dao.impl;

import day20170417.exercise.dao.AnimalDao;
import day20170417.exercise.dao.AnimalShop;
import day20170417.exercise.entity.AnimalEntity;

public class AnimalDaoImpl implements AnimalDao {
	
	/**
	 * 重写AnimalDao里面的增加方法
	 */
	@Override
	public boolean addAnimal(AnimalShop animalShop, AnimalEntity animalEntity) {
		//获取笼子的数组
		AnimalEntity[] cage = animalShop.getAnimalEntity();
		//判断是否可以增加新的宠物
		int count = 0;
		for(int index=0; index<cage.length; index++){
			//获得宠物的对象
			AnimalEntity animal = cage[index];
			//判断笼子是否有对象
			if(animal != null){
				//如果有对象就++
				count++;
			}else{
				//如果位置有空，代表可以增加新的宠物
				break;
			}
		}
		
		//判断笼子是否已经满了
		if(count < cage.length){
			//把加入的宠物装到笼子
			cage[count] = animalEntity;
			//增加成功
			return true;
		}else{
			System.out.println("笼子已满..无法装入");
		}
		//增加失败
		return false;
	}
	
	
	/**
	 * 批量增加
	 * 1.循环笼子数组，拿一个变量记录为空的，再拿变量跟传进来的数组长度进行比较，如果变量大于数组长度可以增加
	 * 2.再拿count下标进行赋值
	 */
	@Override
	public boolean batchAddAnimal(AnimalShop animalShop, String... args) {
		//拿到数组
		AnimalEntity[] oldArrays = animalShop.getAnimalEntity();
		//拿到变长参数的长度
		int len = args.length;
		//记录数组为null的变量
		int oldLen = 0;
		for(int index=0; index<oldArrays.length; index++){
			//拿到动物的对象
			AnimalEntity oldObject = oldArrays[index];
			//如果数组里面有空
			if(oldObject == null){
				//记录数组的变量+1
				oldLen++;
			}
		}
		
		//判断是否可以增加新的宠物
		int count = 0;
		for(int index=0; index<oldArrays.length; index++){
			//获得宠物的对象
			AnimalEntity animal = oldArrays[index];
			if(animal == null){
				//当前对象为空，就把下标赋值给count
				count = index;
				break;
			}
		}
		
		//如果null的数量大于批量增加的长度，则可以加入，否则提示用户
		if(oldLen >= len){
			for(String name : args){
				//新建一个对象存放动物
				AnimalEntity animal = new AnimalEntity();
				animal.setName(name);
				//赋值到数组
				oldArrays[count] = animal;
				//加完一次，下标就+1
				count++;
			}
			return true;
		}else{
			System.out.println("位置不够，最多可以添加:" + oldLen);
			return false;
		}
	}

}
